#ifndef __SCHED_MFQ__
#define __SCHED_MFQ__

#include <vector>
#include <queue>
#include <map>
#include "basesched.h"
#define PRIORIDAD_MAX 0

class SchedMFQ : public SchedBase {
	public:
		SchedMFQ(std::vector<int> argn);
		virtual void load(int pid);
		virtual void unblock(int pid);
		virtual int tick(const enum Motivo m);
	
	private:
		virtual int primeraNoVacia();
        int cantColas;

		std::vector<std::queue<int> > colas;
		std::vector<int> quantums; 
		int quantumUtilizado;

		// Guardo la prioridad en la que estaba el proceso para poder devolverlo a diferentes colas
		std::map<int, int> prioridades;

};

#endif
